# tools/video2imgs.py

import cv2
import os

def video_to_images(video_path, output_dir, frame_interval=1):
    """
    将视频抽取成图像，每隔指定的帧数抽取一帧。

    参数:
    video_path (str): 视频文件路径
    output_dir (str): 输出图像文件的目录
    frame_interval (int): 抽帧间隔，默认为5
    """
    # 创建输出目录（如果不存在）
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    # 打开视频文件
    cap = cv2.VideoCapture(video_path)
    if not cap.isOpened():
        print(f"无法打开视频文件: {video_path}")
        return

    frame_count = 0
    image_count = 0

    while True:
        ret, frame = cap.read()
        if not ret:
            break

        # 每隔frame_interval帧处理一次
        if frame_count % frame_interval == 0:
            image_filename = os.path.join(output_dir, f"frame_{image_count:05d}.jpg")
            cv2.imwrite(image_filename, frame)
            image_count += 1

        frame_count += 1

    cap.release()
    print(f"视频处理完成，共抽取了{image_count}帧图像。")

# 使用示例
if __name__ == "__main__":
    video_path = "video/192.168.31.196_01_20250415163619225_2.mp4"  # 替换为您的视频文件路径
    output_dir = "img"           # 替换为您想保存图像的目录
    video_to_images(video_path, output_dir, frame_interval=1)